package cn.lingyangwl.agile.gateway.sign.core;

import cn.lingyangwl.agile.gateway.sign.model.SignContext;
import cn.lingyangwl.agile.gateway.sign.model.SignModeEnum;
import cn.lingyangwl.framework.sign.SignPayload;
import com.alibaba.fastjson2.JSONObject;

/**
 * 接口签名实现
 * @author shenguangyang
 * @see SignPayload
 */
public interface IApiSign {
    /**
     * 签名的模式
     */
    SignModeEnum getMode();

    /**
     * 是否验证请求签名
     */
    boolean isVerifySign(SignContext context);

    /**
     * 校验请求签名
     */
    void verifySign(SignContext context);

    /**
     * 是否生成响应的签名
     */
    boolean isGenRespSign(SignContext context);

    /**
     * 生成签名, 返回的是修改之后的签名响应数据, 包含了签名数据
     * @param serviceResp 服务响应数据(目标服务的响应数据)
     */
    void genRespSign(SignContext context, JSONObject serviceResp);
}
